import request from './request'

/**
 * 分页条件查询机会
 * @param {Object} params - 查询参数
 * @param {number} params.pageNum - 页码
 * @param {number} params.pageSize - 每页数量
 * @param {number} params.categoryId - 分类ID
 * @param {string} params.title - 机会标题
 * @param {number} params.opportunityStatus - 机会状态
 * @returns {Promise} 返回机会列表
 */
export function getOpportunityList(params) {
  // 确保所有数字类型的参数都被正确转换
  const processedParams = {
    ...params,
    pageNum: params.pageNum ? Number(params.pageNum) : 1,
    pageSize: params.pageSize ? Number(params.pageSize) : 10,
    categoryId: params.categoryId ? Number(params.categoryId) : undefined,
    opportunityStatus: params.opportunityStatus ? Number(params.opportunityStatus) : undefined
  }
  
  // 移除未定义的参数
  Object.keys(processedParams).forEach(key => {
    if (processedParams[key] === undefined || processedParams[key] === null) {
      delete processedParams[key]
    }
  })

  return request({
    url: '/opportunity/page',
    method: 'get',
    params: processedParams
  })
}

/**
 * 获取机会详情
 * @param {string|number} opportunityId - 机会ID
 * @returns {Promise} 返回机会详情数据
 */
export function getOpportunityDetail(opportunityId) {
  return request({
    url: `/opportunity/${opportunityId}`,
    method: 'get'
  })
}

/**
 * 获取所有机会分类
 * @returns {Promise} 返回机会分类列表
 */
export function getOpportunityCategories() {
  return request({
    url: 'opportunityCategory/list',
    method: 'get'
  })
}

/**
 * 发布机会
 * @param {Object} data - 机会数据
 * @returns {Promise} 返回发布结果
 */
export function createOpportunity(data) {
  return request({
    url: '/share/add',
    method: 'post',
    data
  })
}

/**
 * 分页展示顶级评论
 * @param {Object} params - 查询参数
 * @param {number} params.pageNum - 页码
 * @param {number} params.pageSize - 每页数量
 * @param {number} params.opportunityId - 机会ID
 * @returns {Promise} 返回评论列表
 */
export function getComments(params) {
  return request({
    url: '/opportunity/comments',
    method: 'get',
    params
  })
}

/**
 * 获取评论回复列表
 * @param {Object} params - 查询参数
 * @param {number} params.parentId - 父评论ID
 * @param {number} params.topId - 顶级评论ID
 * @returns {Promise} 返回回复列表
 */
export function getCommentReplies(params) {
  return request({
    url: '/opportunity/comments/replies',
    method: 'get',
    params
  })
}

/**
 * 删除评论
 * @param {string|number} commentId - 评论ID
 * @returns {Promise} 返回删除结果
 */
export function deleteComment(commentId) {
  return request({
    url: `/opportunity/comments/${commentId}`,
    method: 'delete'
  })
}

/**
 * 添加评论
 * @param {Object} data - 评论数据
 * @param {string|number} data.opportunityId - 机会ID
 * @param {string} data.content - 评论内容
 * @param {string|number} [data.parentId] - 父评论ID，如果是回复评论则需要
 * @returns {Promise} 返回添加结果
 */
export function addComment(data) {
  return request({
    url: '/opportunity/comments',
    method: 'post',
    data
  })
}

/**
 * 点赞评论
 * @param {string|number} commentId - 评论ID
 * @returns {Promise} 返回点赞结果
 */
export function likeComment(commentId) {
  return request({
    url: `/opportunityComment/like/${commentId}`,
    method: 'post'
  })
}

/**
 * 取消点赞评论
 * @param {string|number} commentId - 评论ID
 * @returns {Promise} 返回取消点赞结果
 */
export function unlikeComment(commentId) {
  return request({
    url: `/pportunityComment/unlike/${commentId}`,
    method: 'post'
  })
}

// --- 其他原有函数（如 favorite, apply 等）可能需要移除或根据新需求调整 ---
// 暂时保留，但它们可能不再适用
export function updateOpportunity(id, data) { return request({ url: `/opportunity/update/${id}`, method: 'post', data }) }
export function deleteOpportunity(id) { return request({ url: `/opportunity/delete/${id}`, method: 'post' }) }
export function applyOpportunity(id, data) { return request({ url: `/opportunity/${id}/apply`, method: 'post', data }) }
export function favoriteOpportunity(id) { return request({ url: `/opportunity/${id}/favorite`, method: 'post' }) }
export function unfavoriteOpportunity(id) { return request({ url: `/opportunity/${id}/unfavorite`, method: 'post' }) }

// 创建评论
export function createComment(data) {
  return request({
    url: '/opportunity/comments',
    method: 'post',
    data
  })
}